var app = getApp();
var serverRoot = app.globalData.serverRoot;

Page({

    /**
     * 页面的初始数据
     */
    data: {
        sourceRoot: app.globalData.sourceRoot,
        carts: [], // 购物车列表
        hasList: false, // 列表是否有数据
        totalPrice: 0, // 总价
        selectAllStatus: true // 全选状态，默认全选
    },

    // 设置购物车图标数字
    getCartLen() {
        let len = this.data.carts.length; // 获取购物车长度
        if (len == 0) {
            wx.removeTabBarBadge({
                index: 2
            });
        } else {
            wx.setTabBarBadge({
                index: 2,
                text: len.toString()
            });
        }
    },

    getTotalPrice() {
        let carts = this.data.carts; // 获取购物车列表
        let total = 0;
        for (let i = 0; i < carts.length; i++) { // 循环列表得到每个数据
            if (carts[i].selected) { // 判断选中才会计算价格
                total += carts[i].num * carts[i].price; // 所有价格加起来
            }
        }
        this.setData({ // 最后赋值到data中渲染到页面
            carts: carts,
            totalPrice: total.toFixed(2)
        });
    },
    selectList(e) {
        const index = e.currentTarget.dataset.index; // 获取data- 传进来的index
        let carts = this.data.carts; // 获取购物车列表
        const selected = carts[index].selected; // 获取当前商品的选中状态
        carts[index].selected = !selected; // 改变状态
        this.setData({
            carts: carts
        });
        this.getTotalPrice(); // 重新获取总价
    },
    selectAll(e) {
        let selectAllStatus = this.data.selectAllStatus; // 是否全选状态
        selectAllStatus = !selectAllStatus;
        let carts = this.data.carts;

        for (let i = 0; i < carts.length; i++) {
            carts[i].selected = selectAllStatus; // 改变所有商品状态
        }
        this.setData({
            selectAllStatus: selectAllStatus,
            carts: carts
        });
        this.getTotalPrice(); // 重新获取总价
    },
    // 增加数量
    addCount(e) {
        const index = e.currentTarget.dataset.index;
        let carts = this.data.carts;
        let num = carts[index].num;
        num = parseInt(num) + 1;
        carts[index].num = num;
        this.setData({
            carts: carts
        });
        this.getTotalPrice();

        // 请求
        wx.request({
            url: serverRoot + 'shopcart/addCount',
            data: {
                good_id: e.currentTarget.dataset.goodid,
            },
            success(res) {
                console.log("增加数量结果：", res);
            }
        });
    },
    // 减少数量
    minusCount(e) {
        const index = e.currentTarget.dataset.index;
        let carts = this.data.carts;
        let num = carts[index].num;
        if (num <= 1) {
            return false;
        } else {
            num = parseInt(num) - 1;
            carts[index].num = num;
            this.setData({
                carts: carts
            });
            this.getTotalPrice();

            // 请求
            wx.request({
                url: serverRoot + 'shopcart/minusCount',
                data: {
                    good_id: e.currentTarget.dataset.goodid,
                },
                success(res) {
                    console.log("减少数量结果：", res);
                }
            });
        }
        
    },
    deleteList(e) {
        const index = e.currentTarget.dataset.index;
        let carts = this.data.carts;
        carts.splice(index, 1); // 删除购物车列表里这个商品
        this.setData({
            carts: carts
        });
        if (!carts.length) { // 如果购物车为空
            this.setData({
                hasList: false // 修改标识为false，显示购物车为空页面
            });
        }

        // 请求
        wx.request({
            url: serverRoot + 'shopcart/minusCart',
            data: {
                good_id: e.currentTarget.dataset.goodid,
            },
            success(res) {
                console.log("删除结果：", res);
            }
        });     

        this.getTotalPrice();
        this.getCartLen();
    },
    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function(options) {

    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function() {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function() {

        var _this = this;

        // 获取购物车数据
        wx.request({
            url: serverRoot + 'shopcart/getList',
            success(res) {
                console.log("购物车数据：", res);
                if (res.data != 0) {
                    _this.setData({
                        hasList: true, // 既然有数据了，那设为true吧
                        carts: res.data
                    });
                    _this.getTotalPrice();
                    _this.getCartLen();
                }                

            }
        });

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide: function() {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload: function() {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh: function() {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom: function() {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function() {

    }
})